package TurtleGraphics;
import java.util.Random;
import java.awt.Color;
public class TestPen {
public static void main (String[] args){
KeyboardReader reader = new KeyboardReader();
while (true){
int test = reader.readInt ("Select test (1-10): ");
if (test == 1)
test1();
else if (test == 2)
test2();
else if (test == 3)
test3();
else if (test == 4)
test4();
else if (test == 5)
test5();
else if (test == 6)
test6();
else if (test == 7)
test7();
else if (test == 8)
test8();
else if (test == 9)
test9();
else if (test == 10)
test10();
else if (test == 11)
test11();
else
System.out.println ("No such test");
}
}
public static void test1(){
Pen p = new StandardPen();
p.setWidth(3);
baseTest(p);
}
public static void test2(){
Pen p = new WiggleRainbowPen();
baseTest(p);
}
public static void test3(){
SketchPad pad = new SketchPad();
Pen p1 = new StandardPen(pad);
Pen p2 = new StandardPen(pad);
SketchPadWindow win = new SketchPadWindow(300, 300, pad);
int i;
p1.setColor(Color.blue); p2.setColor(Color.red);
for (i = 1; i < 10; i++){
p1.turn(36); p1.move(20);
p2.turn(-36); p2.move(20);
}
}
public static void test4(){
SketchPad pad = new SketchPad();
SketchPadWindow win = new SketchPadWindow(300, 300, pad);
Pen p;
p = new StandardPen(pad);
p.move(75);
p = new WigglePen(pad, 1, 40);
p.setColor(Color.blue); p.move(75);
p = new WigglePen(pad, 2, 40);
p.setColor(Color.red); p.move(0, 75);
for (int i = 1; i <= 5; i++){
p = new WigglePen(pad, i, 40);
p.setColor(Color.blue);
p.up(); p.move(-90, -i * 10);
p.down(); p.move(90, -i * 10);
}
p = new WigglePen(pad, 5, 40);
p.up(); p.move(50, -100); p.setDirection(0); p.down();
for (int i = 1; i <= 4; i++){
p.move(150); p.turn(-90);
}
p = new StandardPen(pad);
p.setColor(Color.blue); p.setWidth(1);
p.up() ; p.move(-90, - 100);
p.down(); p.move(10, - 100);
for (int i = 1; i <= 5; i++){
p = new WigglePen(pad, 1, 40);
p.setColor(Color.blue); p.setWidth(1);
p.up() ; p.move(-90, - 100);
p.down(); p.move(-90 + i * 20, - 100);
}
}
public static void test5(){
Pen p = new WigglePen();
baseTest(p);
}
public static void test6(){
Pen p = new RainbowPen();
baseTest(p);
}
public static void test7(){
Pen p = new StandardPen();
double radius = 50.0;
double side = 2.0 * Math.PI * radius / 120.0;
p.up();p.move(50, - side / 2.0); p.setDirection(90); p.down();
for (int i = 0; i < 120; i++){
p.move(side); p.turn(3);
}
}
public static void test8(){
Pen p = new BackwardPen();
baseTest(p);
}
public static void test9(){
Shapes s = new Shapes();
s.setColor(Color.blue);
s.drawLine(-50, 0, 50, 0);
s.setColor(Color.red);
s.drawLine(0, -50, 0, 50);
s.setColor(Color.magenta);
s.drawCircle(30, 30, 30);
s.setColor(Color.yellow);
s.drawRectangle(-10, -10, -50, - 30);
}
public static void test10(){
SketchPadWindow win = new SketchPadWindow(400, 400);
Pen pen = new StandardPen(win);
pen.up();
pen.move(100);
pen.down();
for (int count = 1; count <= 200/5; count++){
pen.setColor(Color.red);
for (int i = 1; i <= 4; i++){
pen.move(25);
pen.turn(90);
}
pen.setColor(Color.blue);
for (int i = 1; i <= 4; i++){
pen.move(25);
pen.turn(90);
}
pen.up();
pen.move(-5);
pen.down();
}
}
public static void test11(){
Random generator = new Random();
StandardPen pen = new StandardPen();
pen.setWidth(1);
int i, turnAmount;
for (i = 1; i <= 100; i++){
turnAmount = generator.nextInt(360);
pen.turn (turnAmount);
pen.move (5);
}
}
public static void baseTest(Pen p){
// Display the turtle's state
System.out.println (p);
// Draw red string at 40, 40
p.up(); p.setColor(Color.red); p.move(40,40); p.drawString("xxx");
//home and draw a blue string at home position
p.home();
p.drawString ("Hello world!");
// Draw a cross at midscreen (blue up, left yellow, red down, right green)
p.down();
p.home(); p.setColor(Color.blue) ; p.move(50) ;
p.home(); p.setColor(Color.yellow); p.turn(90) ; p.move(50);
p.home(); p.setColor(Color.red) ; p.setDirection(270); p.move(50);
p.home(); p.setColor(Color.green) ; p.setDirection(0) ; p.move(50);
// Draw clockwise dark gray 10 sided regular polygon in
// the third quadrant, width 1
p.home(); p.turn (90); p.setColor (Color.darkGray); p.down(); p.setWidth(1);
for (int i = 0; i < 10; i++){
p.move (15);
p.turn (-36);
}
// Draw clockwise red 10 sided polygon, width 2 on top of it
p.home(); p.turn (90); p.setColor (Color.red); p.down(); p.setWidth(2);
for (int i = 0; i < 10; i++){
p.move (20);
p.turn (-36);
}
// Draw a square at -10, -10 using setDirection and move(distance)
p.up(); p.move(-10, -10); p.down();
for (int i = 2; i <= 5; i++){
p.setDirection(i * 90);
p.move(50);
}
// Draw a smaller square inside at -15, -15 using move(x, y)
p.setColor(Color.blue); p.up(); p.move(-15, -15); p.down();
p.move(-45, -15); p.move(-45, -45); p.turn(90); p.move(30); p.move(-15, -15);
// Test setDirection
p.down();
p.home(); p.setColor(Color.magenta); p.setDirection(-45); p.move(50);
p.home(); p.setColor(Color.green) ; p.setDirection(225) ; p.move(50);
}
}